ํ๋ก ํธ์๋ ์ปดํฌ๋ํธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ํ ์๋งจํฑ ๋ฒ์ ๊ด๋ฆฌ(SemVer) ์ข ํฉ ๊ฐ์ด๋. ์ ์ญ ๊ฐ๋ฐ ํ์ ํธํ์ฑ, ์์ ์ฑ ๋ฐ ํจ์จ์ ์ธ ์ ๋ฐ์ดํธ ๋ณด์ฅ.
ํ๋ก ํธ์๋ ์ปดํฌ๋ํธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋ฒ์ ๊ด๋ฆฌ: ์๋ฏธ๋ก ์ ๋ฒ์ ๊ด๋ฆฌ ๋ง์คํฐํ๊ธฐ
๋น ๋ฅด๊ฒ ์งํํ๋ ํ๋ก ํธ์๋ ๊ฐ๋ฐ ํ๊ฒฝ์์ ์ปดํฌ๋ํธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ํ์ฅ ๊ฐ๋ฅํ๊ณ ์ ์ง ๊ด๋ฆฌ ๊ฐ๋ฅํ๋ฉฐ ์ผ๊ด๋ ์ฌ์ฉ์ ์ธํฐํ์ด์ค๋ฅผ ๊ตฌ์ถํ๋ ๋ฐ ํ์์ ์ธ ์์๊ฐ ๋์์ต๋๋ค. ์ ๊ตฌ์กฐํ๋ ์ปดํฌ๋ํธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ์ฝ๋ ์ฌ์ฌ์ฉ์ ์ด์งํ๊ณ ๊ฐ๋ฐ ์ฃผ๊ธฐ๋ฅผ ๋จ์ถํ๋ฉฐ ์ฌ๋ฌ ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ฑธ์ณ ํต์ผ๋ ์ฌ์ฉ์ ๊ฒฝํ์ ๋ณด์ฅํฉ๋๋ค. ๊ทธ๋ฌ๋ ์ด๋ฌํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ํจ๊ณผ์ ์ผ๋ก ๊ด๋ฆฌํ๊ณ ์ ๋ฐ์ดํธํ๋ ค๋ฉด ๊ฐ๋ ฅํ ๋ฒ์ ๊ด๋ฆฌ ์ ๋ต์ด ํ์ํฉ๋๋ค. ๋ฐ๋ก ์ฌ๊ธฐ์ ์๋ฏธ๋ก ์ ๋ฒ์ ๊ด๋ฆฌ(SemVer)๊ฐ ๋ฑ์ฅํฉ๋๋ค. ์ด ์ข ํฉ ๊ฐ์ด๋์์๋ SemVer์ ๋ณต์กํ ๋ด์ฉ์ ์์ธํ ์ดํด๋ณด๊ณ ํ๋ก ํธ์๋ ์ปดํฌ๋ํธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋ํ ์ค์์ฑ์ ๊ฐ์กฐํ๋ฉฐ ๊ตฌํ์ ์ํ ์ค์ง์ ์ธ ์ง์นจ์ ์ ๊ณตํฉ๋๋ค.
์๋ฏธ๋ก ์ ๋ฒ์ ๊ด๋ฆฌ(SemVer)๋ ๋ฌด์์ธ๊ฐ์?
์๋ฏธ๋ก ์ ๋ฒ์ ๊ด๋ฆฌ๋ ๊ฐ ๋ฆด๋ฆฌ์ค์ ๋์ ๋ ๋ณ๊ฒฝ ์ฌํญ์ ์ค์์ฑ์ ์ ๋ฌํ๊ธฐ ์ํด ์ธ ๋ถ๋ถ์ผ๋ก ๋ ์ซ์(MAJOR.MINOR.PATCH)๋ฅผ ์ฌ์ฉํ๋ ๋๋ฆฌ ์ฑํ๋ ๋ฒ์ ๊ด๋ฆฌ ์ฒด๊ณ์ ๋๋ค. ์ด๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ฌ์ฉ์์๊ฒ ์ ๋ฐ์ดํธ์ ์ฑ๊ฒฉ์ ๋ช ํํ๊ณ ํ์คํ๋ ๋ฐฉ์์ผ๋ก ์ ๋ฌํ์ฌ, ์ฌ์ฉ์๊ฐ ์ธ์ ์ด๋ป๊ฒ ์ ๊ทธ๋ ์ด๋ํ ์ง์ ๋ํด ์ ๋ณด์ ์ ๊ฐํ ๊ฒฐ์ ์ ๋ด๋ฆด ์ ์๋๋ก ํฉ๋๋ค. ๋ณธ์ง์ ์ผ๋ก SemVer๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ ์ง ๊ด๋ฆฌ์์ ์ฌ์ฉ์ ๊ฐ์ ๊ณ์ฝ์ ๋๋ค.
SemVer์ ํต์ฌ ์์น์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค:
- MAJOR ๋ฒ์ : ํธํ๋์ง ์๋ API ๋ณ๊ฒฝ์ ๋ํ๋ ๋๋ค. ๋ฉ์ด์ ๋ฒ์ ์ฆ๊ฐ๋ ์๋น์๊ฐ ์ ๋ฒ์ ์ ์ฑํํ๊ธฐ ์ํด ์ฝ๋๋ฅผ ์์ ํด์ผ ํ๋ ํธํ์ฑ ์๋ ๋ณ๊ฒฝ์ ์๋ฏธํฉ๋๋ค.
- MINOR ๋ฒ์ : ํ์ ํธํ ๊ฐ๋ฅํ ๋ฐฉ์์ผ๋ก ์ถ๊ฐ๋ ์ ๊ธฐ๋ฅ์ ๋ํ๋ ๋๋ค. ๋ง์ด๋ ๋ฒ์ ์ ๊ธฐ์กด ๊ธฐ๋ฅ์ ์์์ํค์ง ์๊ณ ์ ๊ธฐ๋ฅ์ ๋์ ํฉ๋๋ค.
- PATCH ๋ฒ์ : ํ์ ํธํ ๊ฐ๋ฅํ ๋ฒ๊ทธ ์์ ์ ๋ํ๋ ๋๋ค. ํจ์น ๋ฒ์ ์ ์ ๊ธฐ๋ฅ์ ๋์ ํ๊ฑฐ๋ ๊ธฐ์กด ๊ธฐ๋ฅ์ ์์์ํค์ง ์๊ณ ๋ฒ๊ทธ์ ๋ณด์ ์ทจ์ฝ์ ์ ํด๊ฒฐํฉ๋๋ค.
์ ํ์ ์ธ ์ฌ์ ๋ฆด๋ฆฌ์ค ์๋ณ์(์: `-alpha`, `-beta`, `-rc`)๋ฅผ ๋ฒ์ ๋ฒํธ์ ์ถ๊ฐํ์ฌ ๋ฆด๋ฆฌ์ค๊ฐ ์์ง ์์ ์ ์ด์ง ์์์ ๋ํ๋ผ ์ ์์ต๋๋ค.
์์: `2.1.4-beta.1`์ ๋ฒ์ ๋ฒํธ๋ ๋ฒ์ 2.1.4์ ๋ฒ ํ ๋ฆด๋ฆฌ์ค(์ฌ์ ๋ฆด๋ฆฌ์ค)๋ฅผ ๋ํ๋ ๋๋ค.
ํ๋ก ํธ์๋ ์ปดํฌ๋ํธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ์๋ฏธ๋ก ์ ๋ฒ์ ๊ด๋ฆฌ๊ฐ ์ค์ํ ์ด์ ๋ ๋ฌด์์ธ๊ฐ์?
ํ๋ก ํธ์๋ ์ปดํฌ๋ํธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ์ข ์ข ์ฌ๋ฌ ํ๋ก์ ํธ์ ํ์์ ๊ณต์ ๋๋ฏ๋ก ๋ฒ์ ๊ด๋ฆฌ๊ฐ ๊ด๋ฆฌ์ ๋งค์ฐ ์ค์ํ ์ธก๋ฉด์ ๋๋ค. ๋ช ํํ๊ณ ์ผ๊ด๋ ๋ฒ์ ๊ด๋ฆฌ ์ ๋ต์ด ์์ผ๋ฉด ์ปดํฌ๋ํธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ ๊ทธ๋ ์ด๋ํ ๋ ์์์น ๋ชปํ ํธํ์ฑ ์๋ ๋ณ๊ฒฝ์ด ๋ฐ์ํ์ฌ ์ ํ๋ฆฌ์ผ์ด์ ์ค๋ฅ, UI ๋ถ์ผ์น ๋ฐ ๊ฐ๋ฐ ์๊ฐ ๋ญ๋น๋ก ์ด์ด์ง ์ ์์ต๋๋ค. SemVer๋ ๊ฐ ์ ๋ฐ์ดํธ์ ์ ์ฌ์ ์ํฅ์ ๋ช ํํ๊ฒ ์ ํธํ์ฌ ์ด๋ฌํ ์ํ์ ์ํํ๋ ๋ฐ ๋์์ด ๋ฉ๋๋ค.
SemVer๊ฐ ํ๋ก ํธ์๋ ์ปดํฌ๋ํธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ํ์์ ์ธ ์ด์ ๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค:
- ์ข ์์ฑ ๊ด๋ฆฌ: ํ๋ก ํธ์๋ ํ๋ก์ ํธ๋ ์ข ์ข ์๋ง์ ํ์ฌ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ์์กดํฉ๋๋ค. SemVer๋ฅผ ์ฌ์ฉํ๋ฉด npm ๋ฐ yarn๊ณผ ๊ฐ์ ํจํค์ง ๊ด๋ฆฌ์๊ฐ ๋ฒ์ ์ ์ฝ ์กฐ๊ฑด์ ์กด์คํ๋ฉด์ ์ข ์์ฑ์ ์๋์ผ๋ก ํด๊ฒฐํ์ฌ ์ ๋ฐ์ดํธ๊ฐ ๊ธฐ์กด ๊ธฐ๋ฅ์ ์ค์๋ก ์์์ํค์ง ์๋๋ก ๋ณด์ฅํฉ๋๋ค.
- ํ์ ํธํ์ฑ: SemVer๋ ์ ๋ฐ์ดํธ๊ฐ ํ์ ํธํ๋๋์ง ๋๋ ํธํ์ฑ ์๋ ๋ณ๊ฒฝ์ ๋์ ํ๋์ง๋ฅผ ๋ช ์์ ์ผ๋ก ์ ๋ฌํฉ๋๋ค. ์ด๋ฅผ ํตํด ๊ฐ๋ฐ์๋ ์ข ์์ฑ์ ์ธ์ ์ด๋ป๊ฒ ์ ๊ทธ๋ ์ด๋ํ ์ง์ ๋ํ ์ ๋ณด์ ์ ๊ฐํ ๊ฒฐ์ ์ ๋ด๋ฆด ์ ์์ด ์ค๋จ ๋ฐ ์ฌ์์ ์ ์ต์ํํ ์ ์์ต๋๋ค.
- ํ์ ๊ฐ์ : SemVer๋ ์ปดํฌ๋ํธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ ์ง ๊ด๋ฆฌ์์ ์ฌ์ฉ์ ๊ฐ์ ํ์ ์ ์ด์งํฉ๋๋ค. ๋ณ๊ฒฝ ์ฌํญ์ ์ฑ๊ฒฉ์ ๋ช ํํ๊ฒ ์ ๋ฌํจ์ผ๋ก์จ SemVer๋ ๊ฐ๋ฐ์๊ฐ ์ ๋ฐ์ดํธ์ ์ํฅ์ ์ดํดํ๊ณ ์์ ์ ๋ง๊ฒ ๊ณํํ๋ ๋ฐ ๋์์ด ๋ฉ๋๋ค.
- ์ํ ๊ฐ์: ์ ์ง ๊ด๋ฆฌ์์ ์ฌ์ฉ์ ๊ฐ์ ๋ช ํํ ๊ณ์ฝ์ ์ ๊ณตํจ์ผ๋ก์จ SemVer๋ ์์์น ๋ชปํ ํธํ์ฑ ์๋ ๋ณ๊ฒฝ์ ์ํ์ ์ค์ด๊ณ ๋ณด๋ค ์ํํ ์ ๊ทธ๋ ์ด๋ ํ๋ก์ธ์ค๋ฅผ ๋ณด์ฅํฉ๋๋ค.
- ๋ ๋น ๋ฅธ ๊ฐ๋ฐ: ์ค๋ฒํค๋๊ฐ ์ถ๊ฐ๋๋ ๊ฒ์ฒ๋ผ ๋ณด์ด์ง๋ง SemVer๋ ์ข ์์ฑ ์ ๊ทธ๋ ์ด๋๋ก ์ธํ ์์์น ๋ชปํ ์ค๋ฅ๋ฅผ ๋ฐฉ์งํ์ฌ ๊ถ๊ทน์ ์ผ๋ก ๊ฐ๋ฐ ์๋๋ฅผ ๋์ ๋๋ค. ์ปดํฌ๋ํธ ์ ๋ฐ์ดํธ ์ ์์ ๊ฐ์ ์ค๋๋ค.
ํ๋ก ํธ์๋ ์ปดํฌ๋ํธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ์๋ฏธ๋ก ์ ๋ฒ์ ๊ด๋ฆฌ ๊ตฌํํ๊ธฐ
ํ๋ก ํธ์๋ ์ปดํฌ๋ํธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ SemVer๋ฅผ ๊ตฌํํ๋ ค๋ฉด ์์ ์ค๋ช ๋ ์์น์ ๋ฐ๋ฅด๊ณ ์ ์ ํ ๋๊ตฌ์ ์ํฌํ๋ก๋ฅผ ์ฌ์ฉํด์ผ ํฉ๋๋ค. ๋ค์์ ๋จ๊ณ๋ณ ๊ฐ์ด๋์ ๋๋ค:
1. ์ปดํฌ๋ํธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ API ์ ์
์ฒซ ๋ฒ์งธ ๋จ๊ณ๋ ์ปดํฌ๋ํธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๊ณต๊ฐ API๋ฅผ ๋ช ํํ๊ฒ ์ ์ํ๋ ๊ฒ์ ๋๋ค. ์ฌ๊ธฐ์๋ ์ธ๋ถ ์ฌ์ฉ์ ์ํด ์๋๋ ๋ชจ๋ ์ปดํฌ๋ํธ, props, ๋ฉ์๋, ์ด๋ฒคํธ ๋ฐ CSS ํด๋์ค๊ฐ ํฌํจ๋ฉ๋๋ค. API๋ ์ ๋ฌธ์ํ๋๊ณ ์๊ฐ์ด ์ง๋จ์ ๋ฐ๋ผ ์์ ์ ์ด์ด์ผ ํฉ๋๋ค. Storybook๊ณผ ๊ฐ์ ๋๊ตฌ๋ฅผ ์ฌ์ฉํ์ฌ ์ปดํฌ๋ํธ์ ํด๋น API๋ฅผ ๋ฌธ์ํํ๋ ๊ฒ์ ๊ณ ๋ คํด ๋ณด์ธ์.
2. ํจํค์ง ๊ด๋ฆฌ์ ์ ํ
npm ๋๋ yarn๊ณผ ๊ฐ์ ํจํค์ง ๊ด๋ฆฌ์๋ฅผ ์ ํํ์ฌ ์ปดํฌ๋ํธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ์ข ์์ฑ์ ๊ด๋ฆฌํ๊ณ ๋ฆด๋ฆฌ์ค๋ฅผ ๋ ์ง์คํธ๋ฆฌ์ ๊ฒ์ํ์ธ์. npm๊ณผ yarn ๋ชจ๋ SemVer๋ฅผ ์๋ฒฝํ๊ฒ ์ง์ํฉ๋๋ค.
3. ๋ฒ์ ๊ด๋ฆฌ ์์คํ ์ฌ์ฉ
Git๊ณผ ๊ฐ์ ๋ฒ์ ๊ด๋ฆฌ ์์คํ ์ ์ฌ์ฉํ์ฌ ์ปดํฌ๋ํธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ฝ๋์ ๋ณ๊ฒฝ ์ฌํญ์ ์ถ์ ํ์ธ์. Git์ ๋ธ๋์น๋ฅผ ๊ด๋ฆฌํ๊ณ , ํ๊ทธ๋ฅผ ๋ง๋ค๊ณ , ํ๋ก์ ํธ ๊ธฐ๋ก์ ์ถ์ ํ๋ ๊ฐ๋ ฅํ ๋ฉ์ปค๋์ฆ์ ์ ๊ณตํฉ๋๋ค.
4. ๋ฆด๋ฆฌ์ค ํ๋ก์ธ์ค ์๋ํ
๋ฆด๋ฆฌ์ค ํ๋ก์ธ์ค๋ฅผ ์๋ํํ๋ฉด ์ผ๊ด์ฑ์ ๋ณด์ฅํ๊ณ ์ค๋ฅ ์ํ์ ์ค์ผ ์ ์์ต๋๋ค. semantic-release ๋๋ standard-version๊ณผ ๊ฐ์ ๋๊ตฌ๋ฅผ ์ฌ์ฉํ์ฌ ๋ฆด๋ฆฌ์ค ๋ ธํธ๋ฅผ ์์ฑํ๊ณ , ๋ฒ์ ๋ฒํธ๋ฅผ ์ ๋ฐ์ดํธํ๊ณ , ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ npm ๋๋ yarn์ ๊ฒ์ํ๋ ํ๋ก์ธ์ค๋ฅผ ์๋ํํ๋ ๊ฒ์ ๊ณ ๋ คํ์ธ์.
5. SemVer ๊ท์น ๋ฐ๋ฅด๊ธฐ
์ปดํฌ๋ํธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ๋ณ๊ฒฝํ ๋ SemVer ๊ท์น์ ๋ฐ๋ฅด์ธ์:
- ํธํ์ฑ ์๋ ๋ณ๊ฒฝ(MAJOR): ํ์ ํธํ๋์ง ์๋ ๋ณ๊ฒฝ์ ๋์ ํ๋ ๊ฒฝ์ฐ MAJOR ๋ฒ์ ๋ฒํธ๋ฅผ ์ฆ๋ถํ์ธ์. ์ฌ๊ธฐ์๋ ์ปดํฌ๋ํธ ์ ๊ฑฐ, props ์ด๋ฆ ๋ณ๊ฒฝ, ๊ธฐ์กด ์ปดํฌ๋ํธ์ ๋์ ๋ณ๊ฒฝ ๋๋ ๊ธฐ์กด ์คํ์ผ์ ์ํฅ์ ๋ฏธ์น๋ ๋ฐฉ์์ผ๋ก CSS ํด๋์ค ์์ ์ด ํฌํจ๋ฉ๋๋ค. ๋ฆด๋ฆฌ์ค ๋ ธํธ์์ ํธํ์ฑ ์๋ ๋ณ๊ฒฝ ์ฌํญ์ ๋ช ํํ๊ฒ ์ ๋ฌํ์ธ์.
- ์ ๊ธฐ๋ฅ(MINOR): ํ์ ํธํ ๊ฐ๋ฅํ ๋ฐฉ์์ผ๋ก ์ ๊ธฐ๋ฅ์ ์ถ๊ฐํ๋ ๊ฒฝ์ฐ MINOR ๋ฒ์ ๋ฒํธ๋ฅผ ์ฆ๋ถํ์ธ์. ์ฌ๊ธฐ์๋ ์ ์ปดํฌ๋ํธ ์ถ๊ฐ, ๊ธฐ์กด ์ปดํฌ๋ํธ์ ์ props ์ถ๊ฐ ๋๋ ๊ธฐ์กด ์คํ์ผ์ ์ํฅ์ ์ฃผ์ง ์๊ณ ์ CSS ํด๋์ค ๋์ ์ด ํฌํจ๋ฉ๋๋ค.
- ๋ฒ๊ทธ ์์ (PATCH): ์ ๊ธฐ๋ฅ์ ๋์ ํ๊ฑฐ๋ ๊ธฐ์กด ๊ธฐ๋ฅ์ ์์์ํค์ง ์๊ณ ๋ฒ๊ทธ ๋๋ ๋ณด์ ์ทจ์ฝ์ ์ ์์ ํ๋ ๊ฒฝ์ฐ PATCH ๋ฒ์ ๋ฒํธ๋ฅผ ์ฆ๋ถํ์ธ์.
- ์ฌ์ ๋ฆด๋ฆฌ์ค ๋ฒ์ : ๋ฆด๋ฆฌ์ค๊ฐ ์์ง ์์ ์ ์ด์ง ์์์ ๋ํ๋ด๊ธฐ ์ํด ์ฌ์ ๋ฆด๋ฆฌ์ค ์๋ณ์(์: `-alpha`, `-beta`, `-rc`)๋ฅผ ์ฌ์ฉํ์ธ์. ์: 1.0.0-alpha.1, 1.0.0-beta.2, 1.0.0-rc.1
6. ๋ณ๊ฒฝ ์ฌํญ ๋ฌธ์ํ
ํธํ์ฑ ์๋ ๋ณ๊ฒฝ, ์ ๊ธฐ๋ฅ ๋ฐ ๋ฒ๊ทธ ์์ ๋ฑ ๊ฐ ๋ฆด๋ฆฌ์ค์ ๋์ ๋ ๋ชจ๋ ๋ณ๊ฒฝ ์ฌํญ์ ๋ช ํํ๊ฒ ๋ฌธ์ํํ์ธ์. ๊ฐ ๋ณ๊ฒฝ ์ฌํญ์ ์ํฅ์ ์ค๋ช ํ๊ณ ์ฌ์ฉ์๊ฐ ์ฝ๋๋ฅผ ์ ๊ทธ๋ ์ด๋ํ๋ ๋ฐฉ๋ฒ์ ๋ํ ์ง์นจ์ ์ ๊ณตํ๋ ์์ธํ ๋ฆด๋ฆฌ์ค ๋ ธํธ๋ฅผ ์ ๊ณตํ์ธ์. conventional-changelog์ ๊ฐ์ ๋๊ตฌ๋ ์ปค๋ฐ ๋ฉ์์ง๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ๋ณ๊ฒฝ ๋ก๊ทธ ์์ฑ์ ์๋ํํ ์ ์์ต๋๋ค.
7. ๋ฆด๋ฆฌ์ค ์ฒ ์ ํ ํ ์คํธ
๋ฆด๋ฆฌ์ค๋ฅผ ๊ฒ์ํ๊ธฐ ์ ์ ์ฒ ์ ํ ํ ์คํธํ์ฌ ์์ ์ ์ด๊ณ ์์์น ๋ชปํ ๋ฌธ์ ๊ฐ ๋ฐ์ํ์ง ์๋๋ก ํ์ธ์. ์ปดํฌ๋ํธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๊ธฐ๋ฅ์ ํ์ธํ๊ธฐ ์ํด ๋จ์ ํ ์คํธ, ํตํฉ ํ ์คํธ ๋ฐ ์๋ํฌ์๋ ํ ์คํธ๋ฅผ ๊ตฌํํ์ธ์.
8. ์ฌ์ฉ์์ ์ํต
์๋ก์ด ๋ฆด๋ฆฌ์ค, ํธํ์ฑ ์๋ ๋ณ๊ฒฝ, ์ ๊ธฐ๋ฅ ๋ฐ ๋ฒ๊ทธ ์์ ์ ๋ํด ์ฌ์ฉ์์ ํจ๊ณผ์ ์ผ๋ก ์ํตํ์ธ์. ๋ธ๋ก๊ทธ ๊ฒ์๋ฌผ, ์ด๋ฉ์ผ ๋ด์ค๋ ํฐ ๋ฐ ์์ ๋ฏธ๋์ด์ ๊ฐ์ ์ฑ๋์ ์ฌ์ฉํ์ฌ ์ฌ์ฉ์๊ฐ ์ต์ ์ ๋ณด๋ฅผ ์ป๋๋ก ํ์ธ์. ์ฌ์ฉ์๊ฐ ํผ๋๋ฐฑ์ ์ ๊ณตํ๊ณ ๋ฐ๊ฒฌํ ๋ฌธ์ ๋ฅผ ๋ณด๊ณ ํ๋๋ก ์ฅ๋ คํ์ธ์.
์ค์ SemVer ์์
๊ฐ์์ React ์ปดํฌ๋ํธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ SemVer๊ฐ ์ ์ฉ๋๋ ๋ช ๊ฐ์ง ์๋ฅผ ์ดํด๋ณด๊ฒ ์ต๋๋ค:
์์ 1:
๋ฒ์ : 1.0.0 -> 2.0.0
๋ณ๊ฒฝ ์ฌํญ: `Button` ์ปดํฌ๋ํธ์ `color` prop์ด `variant`๋ก ์ด๋ฆ์ด ๋ณ๊ฒฝ๋์์ต๋๋ค. ์ด๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ฌ์ฉ์๊ฐ ์ prop ์ด๋ฆ์ ์ฌ์ฉํ๊ธฐ ์ํด ์ฝ๋๋ฅผ ์ ๋ฐ์ดํธํด์ผ ํ๋ฏ๋ก ํธํ์ฑ ์๋ ๋ณ๊ฒฝ์ ๋๋ค.
์์ 2:
๋ฒ์ : 1.0.0 -> 1.1.0
๋ณ๊ฒฝ ์ฌํญ: `Button` ์ปดํฌ๋ํธ์ ์ `size` prop์ด ์ถ๊ฐ๋์ด ์ฌ์ฉ์๊ฐ ๋ฒํผ ํฌ๊ธฐ๋ฅผ ์ ์ดํ ์ ์์ต๋๋ค. ๊ธฐ์กด ์ฝ๋๊ฐ ์์ ์์ด ๊ณ์ ์๋ํ๋ฏ๋ก ํ์ ํธํ๋๋ ์ ๊ธฐ๋ฅ์ ๋๋ค.
์์ 3:
๋ฒ์ : 1.0.0 -> 1.0.1
๋ณ๊ฒฝ ์ฌํญ: `Input` ์ปดํฌ๋ํธ์์ ์๋ชป๋ ์ ํจ์ฑ ๊ฒ์ฌ ๋ฉ์์ง๋ฅผ ํ์ํ๋ ๋ฒ๊ทธ๊ฐ ์์ ๋์์ต๋๋ค. ์ ๊ธฐ๋ฅ์ ๋์ ํ๊ฑฐ๋ ๊ธฐ์กด ๊ธฐ๋ฅ์ ์์์ํค์ง ์์ผ๋ฏ๋ก ํ์ ํธํ๋๋ ๋ฒ๊ทธ ์์ ์ ๋๋ค.
์์ 4:
๋ฒ์ : 2.3.0 -> 2.3.1-rc.1
๋ณ๊ฒฝ ์ฌํญ: `DataGrid` ์ปดํฌ๋ํธ ๋ด์ ๋ฉ๋ชจ๋ฆฌ ๋์ ์์ ์ฌํญ์ ํฌํจํ๋ ๋ฆด๋ฆฌ์ค ํ๋ณด๊ฐ ์ค๋น๋์์ต๋๋ค. ์ด ์ฌ์ ๋ฆด๋ฆฌ์ค๋ฅผ ํตํด ์ฌ์ฉ์๋ ์ต์ข ํจ์น๊ฐ ๊ฒ์๋๊ธฐ ์ ์ ์์ ์ ํ ์คํธํ ์ ์์ต๋๋ค.
์๋ฏธ๋ก ์ ๋ฒ์ ๊ด๋ฆฌ๋ฅผ ์ํ ๋ชจ๋ฒ ์ฌ๋ก
ํ๋ก ํธ์๋ ์ปดํฌ๋ํธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ SemVer๋ฅผ ๊ตฌํํ ๋ ๋ฐ๋ผ์ผ ํ ๋ช ๊ฐ์ง ๋ชจ๋ฒ ์ฌ๋ก๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค:
- ์ผ๊ด์ฑ ์ ์ง: ์ปดํฌ๋ํธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋ณ๊ฒฝ ์ ํญ์ SemVer ๊ท์น์ ๋ฐ๋ฅด์ธ์.
- ๋ณด์์ ์ผ๋ก ์ ๊ทผ: ์์ฌ์ค๋ฌ์ด ๊ฒฝ์ฐ MAJOR ๋ฒ์ ๋ฒํธ๋ฅผ ์ฆ๋ถํ์ธ์. ์์์น ๋ชปํ ํธํ์ฑ ์๋ ๋ณ๊ฒฝ์ ๋์ ํ๋ ๊ฒ๋ณด๋ค ์ง๋์น๊ฒ ์กฐ์ฌํ๋ ๊ฒ์ด ๋ซ์ต๋๋ค.
- ๋ช ํํ๊ฒ ์ํต: ๋ฆด๋ฆฌ์ค ๋ ธํธ์์ ๋ณ๊ฒฝ ์ฌํญ์ ์ฑ๊ฒฉ์ ๋ช ํํ๊ฒ ์ ๋ฌํ์ธ์.
- ํ๋ก์ธ์ค ์๋ํ: ๋ฆด๋ฆฌ์ค ํ๋ก์ธ์ค๋ฅผ ์๋ํํ์ฌ ์ผ๊ด์ฑ์ ๋ณด์ฅํ๊ณ ์ค๋ฅ ์ํ์ ์ค์ด์ธ์.
- ์ฒ ์ ํ๊ฒ ํ ์คํธ: ๋ฆด๋ฆฌ์ค๋ฅผ ๊ฒ์ํ๊ธฐ ์ ์ ์ฒ ์ ํ๊ฒ ํ ์คํธํ์ธ์.
- ์๋น์ ๊ณ ๋ ค: SemVer๋ ๊ณ์ฝ์ด๋ผ๋ ๊ฒ์ ๊ธฐ์ตํ์ธ์. ๋ณ๊ฒฝ ์ฌํญ์ด ์๋น์์๊ฒ ๋ฏธ์น๋ ์ํฅ์ ์์ธกํด ๋ณด์ธ์.
์ผ๋ฐ์ ์ธ ๋ฌธ์ ์ ๋ฐ ํด๊ฒฐ ๋ฐฉ๋ฒ
SemVer๋ ๋ฒ์ ๊ด๋ฆฌ์ ๋ํ ๋ช ํํ๊ณ ํ์คํ๋ ์ ๊ทผ ๋ฐฉ์์ ์ ๊ณตํ์ง๋ง, ๊ฐ๋ฐ์๊ฐ ํ๋ก ํธ์๋ ์ปดํฌ๋ํธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๊ตฌํํ ๋ ์ ํ ์ ์๋ ๋ช ๊ฐ์ง ์ผ๋ฐ์ ์ธ ๋ฌธ์ ์ ์ด ์์ต๋๋ค:
- ํธํ์ฑ ์๋ ๋ณ๊ฒฝ ์๋ณ: ํนํ ๋ณต์กํ ์ปดํฌ๋ํธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์์ ๋ชจ๋ ์ ์ฌ์ ์ธ ํธํ์ฑ ์๋ ๋ณ๊ฒฝ์ ์๋ณํ๋ ๊ฒ์ ์ด๋ ค์ธ ์ ์์ต๋๋ค. ์ฝ๋๋ฅผ ์ฒ ์ ํ ๊ฒํ ํ๊ณ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ฌ์ฉ์์๊ฒ ๋ฏธ์น๋ ๋ณ๊ฒฝ์ ์ํฅ์ ๊ณ ๋ คํ์ธ์. ๋ฆฐํฐ ๋ฐ ์ ์ ๋ถ์ ๋๊ตฌ๋ฅผ ์ฌ์ฉํ์ฌ ์ ์ฌ์ ์ธ ๋ฌธ์ ๋ฅผ ์๋ณํ์ธ์.
- ์ข ์์ฑ ๊ด๋ฆฌ: ํนํ ๋์ผํ ์ปดํฌ๋ํธ์ ์ฌ๋ฌ ๋ฒ์ ์ ๋ค๋ฃฐ ๋ ์ปดํฌ๋ํธ ๊ฐ์ ์ข ์์ฑ์ ๊ด๋ฆฌํ๋ ๊ฒ์ ๋ณต์กํ ์ ์์ต๋๋ค. npm ๋๋ yarn๊ณผ ๊ฐ์ ํจํค์ง ๊ด๋ฆฌ์๋ฅผ ์ฌ์ฉํ์ฌ ์ข ์์ฑ์ ๊ด๋ฆฌํ๊ณ ์ปดํฌ๋ํธ ๊ฐ์ ํธํ์ฑ์ ๋ณด์ฅํ์ธ์.
- CSS ๋ณ๊ฒฝ ์ฒ๋ฆฌ: CSS ๋ณ๊ฒฝ์ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ ์ญ์ ์ผ๋ก ์ํฅ์ ๋ฏธ์น ์ ์์ผ๋ฏ๋ก ๊ด๋ฆฌํ๊ธฐ๊ฐ ํนํ ์ด๋ ค์ธ ์ ์์ต๋๋ค. CSS ๋ณ๊ฒฝ ์ ์ฃผ์ํ๊ณ ์คํ์ผ์ ์บก์ํํ๊ณ ์ถฉ๋์ ํผํ๊ธฐ ์ํด CSS-in-JS ์๋ฃจ์ ์ ์ฌ์ฉํ๋ ๊ฒ์ ๊ณ ๋ คํ์ธ์. ํญ์ CSS ๊ท์น์ ์ฐ์ ์์์ ์์์ ๊ณ ๋ คํ์ธ์.
- ์ฌ๋ฌ ํ๊ณผ์ ์กฐ์ : ์ปดํฌ๋ํธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ๋ฌ ํ์์ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ ๋ฆด๋ฆฌ์ค ์กฐ์ ์ด ์ด๋ ค์ธ ์ ์์ต๋๋ค. ๋ช ํํ ๋ฆด๋ฆฌ์ค ํ๋ก์ธ์ค๋ฅผ ์๋ฆฝํ๊ณ ๋ชจ๋ ์ดํด ๊ด๊ณ์์ ํจ๊ณผ์ ์ผ๋ก ์ํตํ์ธ์.
- ์ง์ฐ๋ ์ ๊ทธ๋ ์ด๋: ์ฌ์ฉ์๋ ์ข ์ข ์ข ์์ฑ ์ ๊ทธ๋ ์ด๋๋ฅผ ์ง์ฐํฉ๋๋ค. ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ๋ ์๋ก์ด ๋ฒ์ ์ ์ฑํ์ ์ฅ๋ คํ๊ธฐ ์ํด ์ข์ ๋ฌธ์์ ์ ๊ทธ๋ ์ด๋ ๊ฒฝ๋ก๋ฅผ ์ ๊ณตํ๋์ง ํ์ธํ์ธ์. ์ฃผ์ ์ ๊ทธ๋ ์ด๋๋ฅผ ์ํ ์๋ํ๋ ๋ง์ด๊ทธ๋ ์ด์ ๋๊ตฌ๋ฅผ ์ ๊ณตํ๋ ๊ฒ์ ๊ณ ๋ คํ์ธ์.
ํ๋ก ํธ์๋ ์ปดํฌ๋ํธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋ฒ์ ๊ด๋ฆฌ์ ๋ฏธ๋
ํ๋ก ํธ์๋ ์ปดํฌ๋ํธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋ฒ์ ๊ด๋ฆฌ ๋ถ์ผ๋ ๋ณต์กํ ์ปดํฌ๋ํธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ๊ด๋ฆฌํ๋ ๊ณผ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํ ์๋ก์ด ๋๊ตฌ์ ๊ธฐ์ ์ด ๋ฑ์ฅํ๋ฉด์ ๋์์์ด ์งํํ๊ณ ์์ต๋๋ค. ๋ฒ์ ๊ด๋ฆฌ์ ๋ฏธ๋๋ฅผ ํ์ฑํ๋ ์ผ๋ถ ์ถ์ธ๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค:
- ์ปดํฌ๋ํธ ๊ธฐ๋ฐ ์ํคํ ์ฒ(CBA): ์ปดํฌ๋ํธ ๊ธฐ๋ฐ ์ํคํ ์ฒ๋ก์ ์ ํ์ ๋ณด๋ค ์ ๊ตํ ๋ฒ์ ๊ด๋ฆฌ ์ ๋ต์ ํ์์ฑ์ ์ฃผ๋ํ๊ณ ์์ต๋๋ค. ์ ํ๋ฆฌ์ผ์ด์ ์ด ์ ์ ๋ ๋ชจ๋ํ๋จ์ ๋ฐ๋ผ ์ปดํฌ๋ํธ ๊ฐ์ ์ข ์์ฑ์ ํจ๊ณผ์ ์ผ๋ก ๊ด๋ฆฌํ๋ ๊ฒ์ด ํ์์ ์ ๋๋ค.
- ๋ง์ดํฌ๋ก ํ๋ก ํธ์๋: ๋ง์ดํฌ๋ก ํ๋ก ํธ์๋๋ ํ๋ก ํธ์๋ ์ ํ๋ฆฌ์ผ์ด์ ์ด ๋ ๋ฆฝ์ ์ผ๋ก ๊ฐ๋ฐ ๋ฐ ๋ฐฐํฌ๋ ์ ์๋ ๋ ์๊ณ ๋ ๋ฆฝ์ ์ธ ๋ถ๋ถ์ผ๋ก ๋ถํด๋๋ ์ํคํ ์ฒ ์ ๊ทผ ๋ฐฉ์์ ๋๋ค. ๋ฒ์ ๊ด๋ฆฌ๋ ์ด๋ฌํ ๋ง์ดํฌ๋ก ํ๋ก ํธ์๋ ๊ฐ์ ํธํ์ฑ์ ๋ณด์ฅํ๋ ๋ฐ ์ค์ํ ์ญํ ์ ํฉ๋๋ค.
- ์๋ํ๋ ์ข ์์ฑ ์ ๋ฐ์ดํธ: Dependabot ๋ฐ Renovate์ ๊ฐ์ ๋๊ตฌ๋ ์ข ์์ฑ ์ ๋ฐ์ดํธ ํ๋ก์ธ์ค๋ฅผ ์๋ํํ์ฌ ๋ณด์ ์ทจ์ฝ์ ์ ์ํ์ ์ค์ด๊ณ ์ ํ๋ฆฌ์ผ์ด์ ์ด ์ต์ ๋ฒ์ ์ ์ข ์์ฑ์ ์ฌ์ฉํ๋๋ก ๋ณด์ฅํฉ๋๋ค.
- AI ๊ธฐ๋ฐ ๋ฒ์ ๊ด๋ฆฌ: AI๋ ์ฝ๋ ๋ณ๊ฒฝ ์ฌํญ์ ๋ถ์ํ๊ณ ์ ์ ํ ๋ฒ์ ๋ฒํธ๋ฅผ ์๋์ผ๋ก ๊ฒฐ์ ํ๋ ๋ฐ ์ฌ์ฉ๋์ด ๊ฐ๋ฐ์์ ๋ถ๋ด์ ์ค์ด๊ณ ์ผ๊ด์ฑ์ ๋ณด์ฅํฉ๋๋ค. ์์ง ์ด๊ธฐ ๋จ๊ณ์ด์ง๋ง ์ด ์์ญ์ ๊ฐ๋ฅ์ฑ์ ๋ณด์ฌ์ค๋๋ค.
- ํ์คํ๋ ์ปดํฌ๋ํธ API: ํ๋ ์์ํฌ ๋ฐ ์ ํ๋ฆฌ์ผ์ด์ ๊ฐ์ ์ปดํฌ๋ํธ๋ฅผ ๋ ์ฝ๊ฒ ๊ณต์ ํ ์ ์๋๋ก ์ปดํฌ๋ํธ API๋ฅผ ํ์คํํ๋ ค๋ ๋ ธ๋ ฅ์ด ์ฆ๊ฐํ๊ณ ์์ต๋๋ค. ํ์คํ๋ API๋ ํธํ์ฑ ์๋ ๋ณ๊ฒฝ ์ํ์ ์ค์์ผ๋ก์จ ๋ฒ์ ๊ด๋ฆฌ๋ฅผ ๋จ์ํํ ์ ์์ต๋๋ค.
๊ฒฐ๋ก
์๋ฏธ๋ก ์ ๋ฒ์ ๊ด๋ฆฌ๋ ํ๋ก ํธ์๋ ์ปดํฌ๋ํธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ํจ๊ณผ์ ์ผ๋ก ๊ด๋ฆฌํ๊ธฐ ์ํ ํ์์ ์ธ ๊ดํ์ ๋๋ค. SemVer ๊ท์น์ ๋ฐ๋ฅด๊ณ ์ ์ ํ ๋๊ตฌ์ ์ํฌํ๋ก๋ฅผ ์ฌ์ฉํ๋ฉด ํธํ์ฑ, ์์ ์ฑ ๋ฐ ํจ์จ์ ์ธ ์ ๋ฐ์ดํธ๋ฅผ ๋ณด์ฅํ์ฌ ๊ถ๊ทน์ ์ผ๋ก ๊ฐ๋ฐ ํ๋ก์ธ์ค๋ฅผ ๊ฐ์ ํ๊ณ ๋ ๋์ ์ฌ์ฉ์ ๊ฒฝํ์ ์ ๊ณตํ ์ ์์ต๋๋ค. ์ด๋ ค์์ด ์กด์ฌํ์ง๋ง SemVer์ ๋ํ ์ฌ์ ์๋ฐฉ์ ์ ๊ทผ ๋ฐฉ์์ ์ฅ๊ธฐ์ ์ผ๋ก ์ด์ ์ ์ ๊ณตํฉ๋๋ค. ์๋ํ๋ฅผ ์์ฉํ๊ณ , ๋ช ํํ ์ปค๋ฎค๋์ผ์ด์ ์ ์ฐ์ ์ํ๋ฉฐ, ํญ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ฌ์ฉ์์๊ฒ ๋ฏธ์น๋ ๋ณ๊ฒฝ์ ์ํฅ์ ๊ณ ๋ คํ์ญ์์ค. ํ๋ก ํธ์๋ ๊ฐ๋ฐ ํ๊ฒฝ์ด ๊ณ์ ๋ฐ์ ํจ์ ๋ฐ๋ผ ์ฑ๊ณต์ ์ธ ์ปดํฌ๋ํธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ๊ตฌ์ถํ๊ณ ์ ์ง ๊ด๋ฆฌํ๋ ค๋ฉด ๋ฒ์ ๊ด๋ฆฌ์ ์ต์ ๋ํฅ ๋ฐ ๋ชจ๋ฒ ์ฌ๋ก์ ๋ํ ์ ๋ณด๋ฅผ ์ป๋ ๊ฒ์ด ์ค์ํฉ๋๋ค.
์๋ฏธ๋ก ์ ๋ฒ์ ๊ด๋ฆฌ๋ฅผ ๋ง์คํฐํจ์ผ๋ก์จ ํ์ ๋ ์์ ์ ์ด๊ณ ์ ์ง ๊ด๋ฆฌ ๊ฐ๋ฅํ๋ฉฐ ํ์ฅ ๊ฐ๋ฅํ ํ๋ก ํธ์๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ตฌ์ถํ ์ ์๊ฒ ๋์ด ํ์ ์ ์ด์งํ๊ณ ๊ธ๋ก๋ฒ ์ํํธ์จ์ด ๊ฐ๋ฐ ์ปค๋ฎค๋ํฐ์์ ํ์ ์ ๊ฐ์ํํ ์ ์์ต๋๋ค.